<?php
/**
 * Model de TarefaAtividade
 * @filesource  06/04/2011
 * @author      Estrada Virtual <http://estradavirtual.com.br>
 * @copyright   Copyright <2011> Estrada Virtual
 * @package     <<application>>
 * @subpackage  <<application>>.application.models
 * @version     $Id$
 */
class Model_TarefaAtividade extends App_Db_Table
{
    protected $_name             = 'tarefa_atividade';
    protected $_primary          = array('id_tarefa_atividade');
    protected $_referenceMap     = array(
                    'Tarefa' => array(
                            'columns'       => 'fk_tarefa',
                            'refTableClass' => 'Model_Tarefa',
                            'refColumns'    => 'id_tarefa',
                         ),
                    'Usuario' => array(
                            'columns'       => 'fk_usuario',
                            'refTableClass' => 'Model_Usuario',
                            'refColumns'    => 'id_usuario',
                         ));

    public function gravarAtividade($idTarefa, $idUsuario, $stAtividade)
    {
        $rowTarefaAtividade = $this->getAtual($idTarefa, $idUsuario);
        $dtCadastro = new Zend_Date($rowTarefaAtividade->dt_cadastro);
        $date = new Zend_Date();
        $dateDiff = $date->subTime($dtCadastro);
        $rowTarefaAtividade->qt_horas     = $dateDiff->toString('HH:mm:ss');
        $rowTarefaAtividade->st_atividade = $stAtividade;
        $rowTarefaAtividade->save();
    }

    public function getAtual($idTarefa, $idUsuario)
    {
        $filtro = array('fk_usuario = ?' => $idUsuario,
                'fk_tarefa = ?'  => $idTarefa,
                'dt_fim is null');
        $rowSetAtividades = $this->fetchAll($filtro);
        $qtAtividades = $rowSetAtividades->count();

        if (1 == $qtAtividades) {
            return $rowSetAtividades->current();
        } elseif (0 == $qtAtividades) {
            $dados = array('fk_tarefa'    => $idTarefa,
                           'fk_usuario'   => $idUsuario,
                           'st_atividade' => '',
                           'qt_horas'     => 0,
                           'dt_cadastro'  => date('Y-m-d H:i:s')
                          );
            $rowTarefaAtividade = $this->createRow($dados);
            $rowTarefaAtividade->save();
            return $rowTarefaAtividade;
        } else {
            foreach ($rowSetAtividades as $rowTarefaAtividade) {
                $rowTarefaAtividade->dt_fim   = $rowTarefaAtividade->dt_cadastro;
                $rowTarefaAtividade->qt_horas = 0;
                $rowTarefaAtividade->save();
            }
            return $this->getAtual($idTarefa, $idUsuario);
        }
    }
}
